package com.boot.proofing.mpweb.base.entity.fs;/**
 * @description
 * @autor xbwu on 2018/7/9.
 */

import com.boot.proofing.common.config.BaseConstant;
import com.boot.proofing.common.db.CustomerMetaObjectHandler;
import com.boot.proofing.mpweb.base.entity.enums.UserTypeEnums;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;

/**
 * 用户表字段策略
 * 用于给特殊字段在插入或更新的时候有不同的写入判断，因为默认mybatis plus的字段更新策略是为字段为null时字段不会更新
 * 可以在字段上通过注解 @TableField(strategy=?) 来调整这个逻辑。
 * @author xbwu
 * @create 2018-07-09 
 **/
@Component(UserFieldStrategy.BEAN_NAME)
public class UserFieldStrategy implements CustomerMetaObjectHandler {

    public static final String BEAN_NAME="userFieldStrategy";

    @Override
    public void insertFill(MetaObject metaObject) {
        //用户类型
        UserTypeEnums userType=(UserTypeEnums) getFieldValByName("userType",metaObject);
        if(userType==null){
            setFieldValByName("userType", UserTypeEnums.NORMAL,metaObject);
        }
        //头像默认
        String headPath=(String) getFieldValByName("headPath",metaObject);
        if(headPath==null){
            setFieldValByName("headPath", BaseConstant.headDefaultLocation,metaObject);
        }
    }

    @Override
    public void updateFill(MetaObject metaObject) {
    }
}
